#!/bin/sh
# PCP QA Test No. 692
# pmie reshaping when metrics become available
# GH issue #571
# see also qa/698 for the valgrind version of this test
#
# Copyright (c) 2018 Ken McDonell.  All Rights Reserved.
#

seq=`basename $0`
echo "QA output created by $seq"

# get standard environment, filters and checks
. ./common.product
. ./common.filter
. ./common.check

_cleanup()
{
    cd $here
    $sudo rm -rf $tmp $tmp.*
}

# find at least one line like ...
# Tue Oct 30 20:03:44 2018: rising!
#
_filter()
{
    sed -n \
	-e '/rising!/{
s/.*:/DATE:/
p
}' \
	-e '/falling!/{
s/.*:/DATE:/
p
}' \
    | sort \
    | uniq
}

status=1	# failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15

cat <<'End-of-File' >$tmp.pmie
sample.ghosts.visible;
sample.ghosts.state;
count_inst (sample.ghosts.state == 0);
count_inst (sample.ghosts.state == 0) >= 5;
rising count_inst (sample.ghosts.state == 0) >= 5 -> print "rising!";
falling count_inst (sample.ghosts.state == 0) >= 5 -> print "falling!";
End-of-File

# real QA test starts here
echo "=== with metric visible from the start ===" | tee -a $seq_full
pmstore sample.ghosts.visible 8 >>$seq_full
pmie -t 0.1sec -T2.5sec -c $tmp.pmie -v >$tmp.out 2>$tmp.err
cat $tmp.out $tmp.err >>$seq_full
_filter <$tmp.out

echo | tee -a $seq_full
echo "=== with metric invisible from the start ===" | tee -a $seq_full
pmstore sample.ghosts.visible -1 >>$seq_full
pmie -t 0.1sec -T3.5sec -c $tmp.pmie -v >$tmp.out 2>$tmp.err &
pmsleep 1sec
pmstore sample.ghosts.visible 8 >>$seq_full
wait
cat $tmp.out $tmp.err >>$seq_full
_filter <$tmp.out

# success, all done
status=0
exit
